此為番外,此篇選入番外的原因是 glob 並不是個工具,但是是個會常被各種工具採用的一種配置方式。
glob 是使用萬用字元來匹配複數檔案的表示法。
glob 以萬用字元來表示檔案群集,被大量的用於各種電腦相關的技術上。
以 Bash 為例,當使用的指令需要指定檔案時,使用者就可以 glob 來表示此指令作用的檔案,例如 ls *.js
會列出當前目錄下所有以 .js
結尾的檔案:
> ls *.js
babel.config.js jest.config.js vue.config.js
這裡介紹幾個常用的語法:
語法 | 作用 | 範例 | 取得的檔案 | 排除的檔案 |
---|---|---|---|---|
* |
於單階層目錄下匹配 0 至多字元 | *.js |
search.js |
search.md 、 samples/search.js |
? |
匹配 1 個字元 | samples/?.md |
samples/b.md |
samples/sample.md |
** |
設定於獨立的階層目錄時,則會匹配 0 至多個目錄層中的檔案 | samples/**/sample.md |
samples/sample.md 、 samples/a/sample.md |
samples/a/a.md |
{a,b} |
匹配 a 或 b |
*.{js,md} |
search.js 、 search.md |
search.json |
!(a|b) |
排除匹配 a 或 b 的結果 |
samples/!(*.js) |
samples/b.md 、 samples/sample.md |
samples/search.js |
因為 glob 只是個技術名詞,所以各家在實作時,於語法上多少會有些差距,本文以
node-glob
的語法來做說明。
ls
、 mv
)用來匹配檔案等,因此學習 glob 幾乎就了解大部分電腦技術選取檔案的技術,對於各類工具也可以有更精細的操作。